// pages/searchMark/searchMark.js
// 获取到输入框的值，合法性判断，检验通过，发送后台，渲染数据
/*
  防抖：
  1. 定义全局定时器
*/
var app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 返回的搜索结果数据！！！
    markers: [],
    // 控制取消按钮
    isFocus: false,
    // 输入框的值
    inputValue: ''
  },
  TimeId: -1,

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  // 输入框的值改变 就会触发的事件
  handleInput: function (e) {
    // 1.获取输入框的值
    const {
      value
    } = e.detail
    // 2.检测合法性
    if (!value.trim()) {
      this.setData({
        markers: [],
        isFocus: false
      })
      // 值不合法
      return;
    }
    // 准备发送
    this.setData({
      isFocus: true
    })
    // 3.发送后台
    clearTimeout(this.TimeId);
    this.TimeId = setTimeout(() => {
      // 直接在前端查询
      let totalMarkers = []
      let markerRes = []
      if (app.globalData.layerGlobal) {
        app.globalData.layerGlobal.map((v, i) => {
          v.markerList.map(v => totalMarkers.push(v))
        })
        let reg = new RegExp(value)
        for (let i = 0; i < totalMarkers.length; i++) {
          if (reg.test(totalMarkers[i].markerName)) {
            markerRes.push(totalMarkers[i])
          }
        }
      }
      this.setData({
        markers: markerRes
      })
    }, 500)
  },

  // 点击取消按钮
  handleCancel: function () {
    this.setData({
      inputValue: '',
      isFocus: false,
      markers: ''
    })
  },

  click(e) {
    app.globalData.searchMarkerLon = e.currentTarget.dataset.lon
    app.globalData.searchMarkerLat = e.currentTarget.dataset.lat
  }
})